home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d21 / apibro.arc / APIBRO.TEC next >
Text File  |  1991-03-20  |  48KB  |  977 lines

  1. ID:AB  DESQview API General Information
  2. Quarterdeck Technical Note #187
  3. By Jim Susoy
  4.  
  5. In the Quarterdeck view of the world there are three kinds of DOS programs.
  6.  
  7. There's the DESQview-oblivious program, such as 1-2-3 or AutoCAD,written with
  8. no consideration of DESQview, but still compatible with DESQview.
  9.  
  10. There's the DESQview-aware program. It has been modified slightly so that it
  11. runs efficiently in DESQview and concurrently with other programs. Paradox,
  12. DBASE III, DBASE IV, FoxPro and WordPerfect are DESQview-aware.
  13.  
  14. Then there's the DESQview-specific program, like the DESQview Datebook. It's
  15. written to take advantage of DESQview's power. If you look closely, you'll
  16. discover DESQview behind both the ICL North America and IBM/Tridata point of
  17. sale systems, US Data's factory control systems, TRW's title insurance system,
  18. Moody's Investor's Services' bond rating system, FNN's NewsReal and Novell's
  19. Remote Access Server, to name only a few.
  20.  
  21. Hidden deep inside DESQview 2 is a powerful API (Application Program Interface)
  22. that lets programs control and interact with DESQview and with other programs
  23. running in DESQview.  For MIS and DP departments building workstation
  24. solutions, the DESQview API provides enormous benefits. For it brings OS/2
  25. capabilities (and even OS/2 look and feel if desired) to DOS. Using the
  26. DESQview API, a program can use all the DESQview menu functions available to
  27. the user as well as the power-packed capabilities built into DESQview
  28. multitasking, windowing, intertask communications, mailboxes, shared programs,
  29. memory management, mousing, data transfer, menu-building, and help.
  30.  
  31. So DOS programs can now act alone or together. Either within a window or hidden
  32. behind one, they can do chores in silence or in chorus, all the while utilizing
  33. the full power of DESQview, all the while bringing you treasures you only
  34. dreamed 'til now were possible.
  35.  
  36. A program taking advantage of the DESQview API can display information in
  37. windows and control the color, dimensions, position and ordering of windows on
  38. the screen.  It can disable, limit or enhance the standard DESQview user
  39. interface.  Which means that you can have DESQview-like menus in your program.
  40. Or menu bars and pull-down menus. Or IBM SAA-like menus. It can let DESQview
  41. handle all keyboard and mouse input to menus and forms yet still process
  42. keyboard and mouse input directly when necessary. It can schedule processing
  43. after a certain time interval or at a certain time. It can spawn subtasks for
  44. performing background operations such as printing, recalculating, and
  45. communicating. It can communicate between the various tasks in the system.
  46.  
  47.  
  48. Multitasking
  49.  
  50. DESQview supports true multitasking of existing DOS programs in addition to
  51. programs written specifically for DESQview. So a user can run multiple programs
  52. (Lotus 1-2-3, DBASE IV and others) and DESQview-specific programs (DESQview
  53. Datebook, Calculator, your own program) concurrently. So a user can switch to
  54. whichever program needs input and switch away while the program recalculates or
  55. sorts in background.
  56.  
  57. Under DESQview, each program runs in its own "virtual machine", thinking it has
  58. exclusive access to DOS, the keyboard, etc. DESQview calls these virtual
  59. machines "processes". DESQview calls the portion of a process that keeps track
  60. of which instruction to execute next and what the register contents are a
  61. "task" (or "thread"). Every program running under DESQview consists, initially,
  62. of a single process running a single task.
  63.  
  64. DESQview-specific programs may create additional tasks within their own
  65. processes and additional processes. Additional tasks allow a portion of your
  66. program, the part that controls the printer for example, to be run in
  67. background. Additional processes allow whole new programs to be loaded and run
  68. concurrently.
  69.  
  70.  
  71. Presentation Management
  72.  
  73. Because DESQview lets you run more than one program at a time, DESQview
  74. provides a way to view more than one program at a time on the screen. DESQview
  75. does this by mapping each program into its own "window" and by managing the
  76. display of multiple windows on the screen. To DESQview, windows are rectangular
  77. areas of displayable information. They may be moved, resized, colored, and
  78. reordered by either the user or by your program. Everything that is displayed
  79. on the screen under DESQview is displayed in a window.
  80.  
  81. Multiple windows are not only useful for displaying several programs
  82. simultaneously, but may also be used within a single program to display menus,
  83. help screens, error messages. DESQview provides facilities for storing complete
  84. descriptions of such windows, (known by DESQview as "panels"), on disk or in
  85. your program and displaying them with a single call to the API. These panels
  86. may be as simple as one-line error messages or as complex as data entry forms
  87. with multiple-choice and data entry fields.
  88.  
  89. Once a panel has been displayed, your program can ask DESQview's "field
  90. manager" to process all user input to the panel including mousing and data
  91. entry editing. The field manager returns the results to your program in a
  92. simple, field-oriented format, independent of the appearance of the panel.
  93.  
  94. The use of panels and the field manager not only simplifies the job of
  95. programming an application, but gives a consistency to the user interface that
  96. makes the learning of new applications easier.
  97.  
  98.  
  99. Intertask Communications
  100.  
  101. So that DESQview-specific programs can rapidly exchange information, DESQview
  102. provides a wide range of intertask communications facilities. These facilities
  103. allow several concurrently running tasks to exchange information or signals, to
  104. lock access to common resources, to share common code and data, and to
  105. interrupt each other to handle critical events. These tasks can be in either
  106. the same or in different processes.
  107.  
  108. Intertask communication is the key to building complex applications in a
  109. multitasking environment. Let's say, for example, you are building a point of
  110. sale system, that handles a dozen cash registers for a department store. Using
  111. DESQview you could break your application up into fourteen tasks; one for each
  112. of the cash registers, one to handle access to the pricing data-base and one to
  113. track sales and generate management reports. The cash register tasks would
  114. process keystrokes from the clerk until an item price is needed. They would
  115. then send a message to the database task requesting the price. The database
  116. task would log the sale and return the price to the sender of the request.
  117. Meanwhile, the store manager could interact with the reporting task to monitor
  118. sales, clerk performance, etc.
  119.  
  120.  
  121. Data Transfer
  122.  
  123. DESQview supports two types of user-initiated data transfer. The first, called
  124. Mark &Transfer, lets a user mark text in any window and transfer that text to
  125. any other application. The application receiving the data can be
  126. DESQview-oblivious, seeing the data as normal keyboard input.
  127.  
  128. More sophisticated transfers are possible between DESQview-specific
  129. applications that support the DESQview Scissors command. When the user marks
  130. data in such an application, DESQview notifies the application that data has
  131. been requested and lets the application determine exactly what data to supply.
  132. The application may supply anything including text, formulas, or even graphics
  133. images. When the user instructs DESQview to Paste the data into another
  134. application, that application is also notified so that the data can be handled
  135. appropriately.
  136.  
  137. The applications involved in a Scissors transfer can even use DESQview's
  138. intertask communication facilities to setup a "hot-link" between them- selves
  139. so that subsequent changes to the data are automatically reflected in both
  140. applications.
  141.  
  142.  
  143. Memory Management
  144.  
  145. Programs running under DOS are typically given all of a PC's memory to do with
  146. as they please. In a multitasking environment, memory must be managed so that
  147. more than one program can be loaded at a time and so that no single program is
  148. given more memory than it needs. DESQview provides this management in a way
  149. that adapts to the type of memory hardware available on your PC.
  150.  
  151. If your PC has 640K of conventional memory, DESQview is able to multitask as
  152. many programs as will fit in memory at the same time. Additional programs can
  153. be loaded but will cause the least recently used programs to be suspended and
  154. swapped to disk to make room in memory for the new ones.
  155.  
  156. If your PC is a 286-based system with extended memory, DESQview can still only
  157. multitask the programs that fit in 640K. Additional programs open can be
  158. swapped either to RAM disk, as well as to the user's local disk or network
  159. disk. DESQview is also capable of running 60K of itself in extended
  160. memory<197>thus reducing its DOS conventional memory overhead. If you have EMS
  161. 3.2 (Lotus-Intel-Microsoft Expanded Memory), DESQview will swap programs to
  162. expanded memory instead of to disk. This is so much faster than swapping to
  163. disk that the swap time is almost not noticeable.
  164.  
  165. If your PC has EMS 4.0 or EEMS (AST-Quadram-Ashton Tate Enhanced Expanded
  166. Memory) or a 386-based PC with an EMS 4.0 driver, DESQview can actually
  167. multitask as many programs as will fit in conventional and expanded memory.
  168. This can be as high as 32-megabytes worth of programs. DESQview can also run a
  169. large part of itself in expanded memory, giving a much larger maximum program
  170. size.
  171.  
  172. Furthermore, DESQview can actually run both 286 or 386 DOS Extended programs
  173. simultaneously with your other DOS programs. DOS Extended programs are
  174. programs, such as 1-2-3 Release 3, IBM Interleaf, AutoCAD 386, Paradox 386,
  175. which have been written to take advantage of either the 16-bit protected mode
  176. of the 80286 processor or the 32-bit protected mode of the 80386 processor. It
  177. is important to note that for DESQview to be able to run DOS Extended programs,
  178. the DOS Extender must conform to the PharLap/Quarterdeck VCPI (Virtual Control
  179. Program Interface) specification which specifies how protected mode programs
  180. and 80386 control programs can work together. With most DOS Extenders, you also
  181. get the added benefit of virtual memory support automatically built into the
  182. program a significant benefit if your users have limited memory.
  183.  
  184.  
  185. Customization
  186.  
  187. Although DESQview is best known for its ability to run off-the-shelf software
  188. concurrently, DESQview is an ideal platform for developing customized vertical
  189. market applications and workstations.
  190.  
  191. DESQview's intertask communications and shared program and data capabilities,
  192. coupled with its support of expanded memory, give developers efficient and cost
  193. effective techniques for developing large programs that can still run on DOS
  194. and thus on the large installed base of DOS PCs.
  195.  
  196. In addition to providing multitasking and windowing services, DESQview can be
  197. custom-ized to provide the user interface appropriate to a particular
  198. application.  This customization can take the form of restricting access to
  199. certain DESQview menus, taking special action when certain menu items are
  200. selected, or, in the extreme, disabling all access to DESQview menus and
  201. providing the entire user interface as part of the application.
  202.  
  203. In this latter case, the only part of DESQview that the user sees is a
  204. copyright screen during start-up. DESQview also includes a keystroke macro
  205. capability enabling you to create built-in macros for each application running
  206. as well as global macros which combine actions from several programs.
  207.  
  208.  
  209. Portability
  210.  
  211. DESQview with its entire API runs on 8088, 8086, 80286, 80386 and 80486i PCs as
  212. well as the IBM Personal System/2s with monochrome, CGA, EGA, VGA or Hercules
  213. display adapters. Additionally, Wyse 700 and Micro Display System Genius
  214. adapters are available from Quarterdeck. This means that an application that
  215. you write to be DESQview-specific can run on any PC from a laptop dual-floppy
  216. PC to the very latest 486-based PC. It can even run over a network on a
  217. diskless PC. Thus, the market for your DESQview-specific application extends to
  218. the entire base of existing and future DOS PCs.
  219.  
  220.  
  221. API Details
  222.  
  223. In order for you to get a feel for the power built-in to each and every
  224. DESQview, we've included a short description about each API command.
  225.  
  226. The DESQview API is an object-oriented interface. The data structures DESQview
  227. uses to represent windows, mailboxes, etc. are called "objects". A call to the
  228. API involves "sending a message" to an object, indicating which of several
  229. operations you want performed on that data structure. This is referred to as
  230. the "send interface." Almost the entire API consists of sending one of 25
  231. messages to one of 7 different object types. The DESQview API also has a
  232. non-object-oriented interface called the "direct call interface". This is the
  233. small subset of API functions that are not, by nature, object oriented or that
  234. are convenient alternatives to the send interface. The DESQview API has a
  235. concise way of encoding a complete description of a window so that a single
  236. call to the API can create the window, fill it with the desired information,
  237. size and position it on the display, and define fields that interact with the
  238. user. All this is done using "Window Streams".
  239.  
  240. So that you can interrogate a window for its current contents, position, etc.,
  241. the DESQview 2 API also has "Query Streams." In fact, any window parameter that
  242. can be set by a Window Stream can be read by a Query Stream.
  243.  
  244. DESQview calls the portion of itself that interfaces with the user the "Window
  245. Manager." Each time a user presses the DESQ key (normally the Alt key) and
  246. makes a menu selection, it is the Window Manager that opens, switches,
  247. rearranges and closes windows, transfers data, displays help, or quits
  248. DESQview. In order for an application to have the same power as the user, the
  249. DESQview API has "Manager Streams."
  250.  
  251. Manager Streams enable an application to interact with the Window Manager.
  252. Using Manager Streams an application can, for example, ask the Window Manager
  253. to make one of its windows the topmost window in the system, disallow any
  254. resizing of  the window by the user, and even notify the application if the
  255. user tries to close the window. Using Manager Streams an application can
  256. disallow use of the DESQview menu and DESQview submenus.
  257.  
  258. But, there's still even more to the DESQview API. DESQview provides a
  259. comprehensive set of functions for simplifying the job of interfacing with the
  260. user. Instead of dealing with user input a single character at a time, your
  261. application can present entire menus, dialogue boxes, help screens to DESQview
  262. and get back the resulting user input. Common functions such as cursor control,
  263. insertion and deletion of characters, tracking the mouse, and selection from
  264. option lists are performed by DESQview. DESQview performs these functions under
  265. control of a data structure called the "Field Table.." Information about a
  266. window's size, position, contents and Field Table can be combined together into
  267. "Panels." Panels can be stored on disk or in memory for later display. Panels
  268. can be constructed manually or via the DESQview API Panel Design Tool.
  269.  
  270.  
  271. DESQview 2 API Commands:
  272.  
  273. Send Interface Commands
  274.  
  275. WINDOW Objects
  276.  
  277. ADDTO     write characters & attributes to a window
  278. AT        position the logical cursor
  279. CONNECT   connect one window to another window
  280. EOF       return TRUE if cursor is past end window
  281. ERASE     clear a window
  282. FREE      close and free a window or a task
  283. HANDLE    return handle of current task's window
  284. LEN       return # characters/line in logical window
  285. NEW       create a new window or task
  286. OPEN      fill a window with a given character
  287. READ      read the next logical line from a window
  288. READN     read the next n characters/attributes
  289. REDRAW    redraw a window
  290. SIZEOF    return total # characters/logical window
  291. SUBFROM   write attributes to a window
  292. WRITE     write characters and/or command streams
  293.  
  294. KEYBOARD Objects
  295.  
  296. ADDTO     set individual keyboard control flags
  297. CLOSE     close a keyboard object
  298. ERASE     discard all input queued to keyboard
  299. FREE      free a keyboard object
  300. GETFLAGS  get keyboard control flags
  301. GETPRI    get objectq priority level of keyboard
  302. HANDLE    return handle of task's default keyboard
  303. NEW       create a new keyboard object
  304. OPEN      attach a keyboard to a window
  305. READ      get the next input from the keyboard
  306. SETESC    intercept keystrokes to input fields
  307. SETFLAGS  set/clear all keyboard control flags
  308. SETPRI    set objectq priority level of keyboard
  309. SIZEOF    return # of input buffers queued
  310. STATUS    get the scan code for the last key read
  311. SUBFROM   clear individual keyboard control flags
  312. WRITE     add input buffer to keyboard queue
  313.  
  314. MAILBOX Objects
  315.  
  316. ADDR      return sender of the last message READ
  317. ADDTO     send a message and status by value
  318. CLOSE     close a mailbox
  319. ERASE     discard all queued messages
  320. FREE      free a mailbox
  321. GETFLAGS  get mailbox control flags
  322. GETPRI    get objectq priority level of mailbox
  323. HANDLE    return handle of task's default mailbox
  324. LOCK      request exclusive access to a resource
  325. NEW       create a new mailbox
  326. OPEN      open a mailbox for input
  327. READ      get the next message from the queue
  328. SETFLAGS  set/clear all mailbox control flags
  329. SETNAME   assign a name to a mailbox
  330. SETPRI    set objectq priority level of mailbox
  331. SIZEOF    return the # of messages in the queue
  332. STATUS    return status of the last message READ
  333. SUBFROM   send a message & status by reference
  334. WRITE     send a message by value with status=0
  335.  
  336. OBJECTQ Objects
  337.  
  338. CLOSE     close an objectq
  339. ERASE     remove all objects from the queue
  340. HANDLE    return the handle of a task's objectq
  341. OPEN      open the objectq
  342. READ      wait for input from any open object
  343. SIZEOF    return the number of objects queued
  344. STATUS    return whether or not objectq is open
  345. SUBFROM   remove specific object from queue
  346. WRITE     add an object to the objectq
  347.  
  348. PANEL Objects
  349.  
  350. APPLY     display a particular panel
  351. CLOSE     close a panel object
  352. DIR       return a pointer to the panel directory
  353. FREE      free a panel object
  354. NEW       create a panel object
  355. OPEN      associate panel object with a panel file
  356. SIZEOF    return the # of panels in a panel file
  357. STATUS    verify success of an OPEN or APPLY
  358.  
  359. POINTER Objects
  360.  
  361. ADDTO     set pointer control flags
  362. CLOSE     stop taking pointer input
  363. ERASE     discard all pointer messages
  364. FREE      free a pointer object
  365. GETFLAGS  get pointer control flags
  366. GETPRI    get objectq priority level of pointer
  367. GETSCALE  return the current scaling factors
  368. NEW       create a new pointer object
  369. OPEN      start taking pointer input for window
  370. READ      wait for the next pointer message
  371. SETFLAGS  replace pointer control flags
  372. SETPRI    set objectq priority level of pointer
  373. SETSCALE  set the current scaling factors
  374. SIZEOF    return the number of messages queued
  375. STATUS    return the status of the last message
  376. SUBFROM   reset pointer control flags
  377. WRITE     move the pointer to a specified position
  378.  
  379. TIMER Objects
  380.  
  381. ADDTO     start a timer for a specified interval
  382. CLOSE     close a timer object
  383. ERASE     cancel the current timer interval
  384. FREE      free a timer object
  385. GETPRI    get objectq priority level of timer
  386. LEN       return time remaining before expiration
  387. NEW       create a new timer object
  388. OPEN      open a timer object
  389. READ      wait for the current timer to expire
  390. SETPRI    set objectq priority level of timer
  391. SIZEOF    return elapsed time since timer started
  392. STATUS    return the status of the timer object
  393. WRITE     start a timer to end at a specified time
  394.  
  395. Direct Call Interface Commands
  396.  
  397. APILEVEL  define minimum API level required
  398. APPNUM    get the current application's number
  399. ASSERTMAP get current mapping context & set new
  400. BEGINC    begin critical region
  401. CSTYLE    use C language style control codes
  402. DBGPOKE   poke debug information onto display
  403. DISPEROR  display an error message window
  404. DVPRESENT determine if DESQview is present
  405. ENDC      end critical region
  406. FINDMAIL  find a mailbox by name
  407. FREEBIT   undefine second-level interrupt handler
  408. GETBIT    define a second-level interrupt handler
  409. GETBUF    get address of a Logical Window Buffer
  410. GETCRIT   get critical region nesting level
  411. GETERROR  get error handling level of current task
  412. GETMEM    allocate buffer from System Memory
  413. ISOBJ     determine if a handle is valid
  414. JUSTIFY   turn off/on automatic justification
  415. KMOUSE    control the keyboard mouse
  416. LOCATE    find window at given screen location
  417. NEWPROC   start a new process
  418. OBJTYPE   determine object type of a given handle
  419. OSTACK    switch to task's internal stack
  420. PAUSE     relinquish control to other tasks
  421. PGMINT    interrupt another task
  422. POSTTASK  awaken task by posting its Objectq
  423. POSWIN    position a window on the display
  424. PRINTC    display a character in a window
  425. PUSHKEY   push key into keyboard input stream
  426. PUTMEM    free a buffer allocated by GETMEM
  427. SETBIT    schedule a second-level interrupt handler
  428. SETERROR  set error handling level of current task
  429. SHADOW    get window buffer and start shadowing
  430. SOUND     make a sound
  431. START     start a task that was previously stopped
  432. STOP      stop a task until START is called
  433. UPDATE    update a portion of a window
  434. USTACK    switch off task's internal stack
  435.  
  436.  
  437. Window Stream & Query Stream Commands
  438.  
  439. 00 to 9F  print strings (attrib,char,blanks) to window
  440.  
  441. A0 to CF  change size/ position of a window
  442.  
  443. D0 to DF  set options for appearance of window:
  444.           frames,color,show/hide window, display of control characters
  445.  
  446. E0 to EF  perform immediate actions:clearing,scrolling recoloring,
  447.           redrawing window;create  new windows & repeat command
  448.           sequences
  449.  
  450. F0 to FF  define, read, write fields within window.
  451.  
  452.  
  453. Manager Streams
  454.  
  455. 00 to 3F  Allows specific DESQview commands:
  456.           move & resize window, scroll data, hide
  457.           rearrange program, suspend application, 
  458.           display DESQview menu
  459.  
  460. 40 to 71  notify application on specific DV commands.
  461.  
  462. 84 to 8B  specify environment of window: suspend
  463.           application when it is in background, set
  464.           application's asynchronous notification.
  465.  
  466. AE to BF  enable/disable DESQview extensions.
  467.  
  468. C0 to FF  reorder, hide, unhide, suspend resume
  469.           applications.
  470.  
  471. C, Pascal, BASIC, Clipper & dBASE
  472. Listed below are API Interfaces available with each DESQview API
  473. library.
  474.  
  475.  
  476. C - C 
  477. P - Pascal
  478. B - Basic
  479. R - Clipper
  480. D - dBase
  481.  
  482.       General Functions
  483. CPBRD
  484. -----
  485. YYYYY api_beginc       begin critical region 
  486. YYYYY api_cancel       cancel current Window Mgr operation 
  487. YYYY  api_commonmem    get status of Common Memory 
  488. YYYY  api_convenmem    get status of Conventional Memory 
  489.    Y  api_curdrive     get the current default drive 
  490.    Y  api_dec          convert hex string to unsigned decimal # 
  491. YY Y  api_dvpresent    determine if DESQview is present 
  492. YYYYY api_endc         end critical region
  493. YYYY  api_enterc       begin critical region w/o waiting for DOS 
  494. YYYYY api_exit         exit API interface 
  495. YYYY  api_expandmem    get status of Expanded Memory 
  496. YY Y  api_freebit      disconnect 2nd level interrupt handler 
  497. YY Y  api_getbit       define 2nd level interrupt handler 
  498. YYYYY api_getcommon    get Common Memory buffer 
  499. YYYYY api_getcrit      get critical region nesting level 
  500. YYYYY api_getmem       get System Memory buffer 
  501.    Y  api_hex          convert decimal # to hexadecimal string 
  502.    Y  api_hexaddr      convert addr to string in seg:off hex form 
  503. YYYYY api_init         initialize API interface & return version of
  504.                        DESQview
  505.   Y   api_interactive  determine if in BASIC interactive
  506.                        environment
  507. YYYYY api_isobj        determine if a given handle is valid 
  508.    Y  api_isset        determine if given bit is set within a
  509.                        specified byte
  510. YYYYY api_justify      enable/disable automatic justification of
  511.                        task window
  512. YYYYY api_kmouse       turn keyboard mouse on and off 
  513. YYYYY api_level        define API revision level that application
  514.                        requires
  515. YYYYY api_objtype      determine object type of a given handle 
  516. YYYYY api_pause        give other tasks a chance to run 
  517. YYYYY api_poke         display debug info on bottom line of screen 
  518. YYYY  api_processmem   get status of app's Process Memory 
  519. YYYYY api_pushkey      push key into input stream 
  520. YYYY  api_putcommon    return Common Memory buffer 
  521. YYYY  api_putkey       put key into an application's input stream 
  522. YYYY  api_putmem       return System Memory buffer 
  523.    Y  api_read         read from DV-owned memory buffer 
  524. YY Y  api_setbit       schedule a 2nd level interrupt handler 
  525. YY Y  api_shadow       get task's logical window buffer & start
  526.                        shadowing
  527. YYYYY api_sound        make a sound 
  528. YY Y  api_update       redraw portion of a task's logical window 
  529.    Y  api_write        write to DESQview-owned memory buffer
  530.  
  531.  
  532.       Application Management Functions
  533. CPBRD
  534. -----
  535. YYYYY app_foreonly     indicate whether app can run in background 
  536. YYYYY app_free         free an application and its window 
  537. YYYYY app_goback       force an application into background 
  538. YYYYY app_gofore       force an application into foreground 
  539. YYYYY app_hide         hide all windows of an application 
  540. YYYY  app_new          start a new app in the current process 
  541. YYYYY app_number       get the current app's Switch number  
  542.    Y  app_run          execute DOS command in new process 
  543. YYYYY app_show         display all windows of an application 
  544. YYYYY app_start        start a new application in a new process 
  545. YYYYY app_suspend      suspend and hide all tasks in an app
  546.       
  547.       
  548.       Field Management Functions 
  549. CPBRD
  550. -----
  551. YYYYY fld_altmode      set Alternate Field Processing mode 
  552.    Y  fld_atget        input data at specified field position 
  553.    Y  fld_atprompt     paint menu prompts & define msg at fld
  554.    Y  fld_atsay        display data at specified field 
  555. YYYYY fld_attr         fill a field with a given attribute 
  556. YYYYY fld_char         fill a field with a given character 
  557. YYYYY fld_clear        clear a field 
  558. YYYYY fld_cursor       move cursor to a field 
  559. YYYYY fld_entry        change field table entry 
  560. YYYYY fld_header       change field table header 
  561.  YYY  fld_lentry       load field table entry of field table window
  562.                        stream
  563.  YYY  fld_lheader      load field table header of field table
  564.                        window stream
  565. YYYYY fld_marker       define selected-field marker character 
  566. YYYYY fld_point        move pointer to a given position in a field 
  567. YYYYY fld_protattr     set Protected Attrib field processing mode 
  568. YYYYY fld_reset        reset selected and modified bits 
  569. YYYYY fld_scroll       scroll a field 
  570.  YYY  fld_stream       allocate string space for field table window
  571.                        stream
  572. YYYYY fld_type         change the type of a field 
  573. YYYYY fld_write        write a string into a field
  574.       
  575.       
  576.       Keyboard Management Functions 
  577. CPBRD
  578. -----
  579.    Y  key_accept       enter a string into a memory variable 
  580. YYYYY key_addto        set keyboard control flags 
  581.    Y  key_clear        empty keyboard type ahead buffer 
  582.    Y  key_clkey        convert DV key code to Clipper key code 
  583. YYYYY key_close        disconnect keyboard from its window 
  584.    Y  key_dvkey        convert Clipper key code to DV key code 
  585. YYYYY key_erase        discard pending keyboard input 
  586. YYYYY key_free         free a keyboard object 
  587. YYYYY key_getc         wait for next key (keystroke mode) 
  588. YYYYY key_getflags     get keyboard control flags 
  589. YYYYY key_getpri       get priority level of keyboard in objectq 
  590.   YY  key_inkey        read a character from keyboard 
  591.    Y  key_input        enter an expression into a memory variable 
  592.    Y  key_keyboard     stuff keyboard buffer with a string 
  593.    Y  key_lastkey      determine last key fetched from keybd 
  594. YYYYY key_me           get current task's keyboard handle 
  595.    Y  key_nextkey      read the next key from keyboard 
  596. YYYYY key_new          create a new keyboard object 
  597. YYYYY key_of           get handle of a given task's keyboard 
  598. YYYYY key_open         attach keyboard to a given window 
  599. YYYY  key_owner        get owner of a given keyboard 
  600. YYYYY key_read         read input from keyboard 
  601.    Y  key_readinsert   return the current insert mode setting 
  602.    Y  key_readlast     read DV key code in key_lastkey buffer 
  603.    Y  key_setcursor    determine if hardware cursor displayed 
  604. YYYY  key_setesc       define function to filter keys in fld mode 
  605. YYYYY key_setflags     replace keyboard control flags 
  606. YYYYY key_setpri       set priority level of kbd in task's objectq 
  607. YYYYY key_sizeof       get # keyboard messages pending 
  608. YYYYY key_status       get status of last keyboard message 
  609. YYYYY key_subfrom      clear keyboard control flags 
  610.    Y  key_wait         suspend task until a key is pressed 
  611. YYYYY key_write        write string to keyboard 
  612.    Y  key_writelast    write DV key code into 
  613.       
  614.       
  615.       Mailbox Management Functions
  616. CPBRD
  617. -----
  618. YYYYY mal_addr         return sender of last message 
  619. YYYYY mal_addto        send a message by value with given status 
  620. YYYYY mal_close        close a mailbox 
  621. YYYYY mal_erase        erase all pending messages 
  622. YYYYY mal_find         find a mailbox by name 
  623. YYYYY mal_free         free a mailbox object 
  624. YYYY  mal_getflags     get mailbox control flags 
  625. YYYY  mal_getpri       get priority level of mailbox in objectq 
  626. YYYYY mal_lock         lock access to a resource 
  627. YYYYY mal_me           get handle of current task's mailbox 
  628. YYYYY mal_name         assign a global name to a mailbox 
  629. YYYYY mal_new          create a new mailbox 
  630. YYYYY mal_of           get handle of a given task's mailbox 
  631. YYYYY mal_open         open a mailbox 
  632. YYYY  mal_ownerget     owner of a given mailbox 
  633. YYYYY mal_read         wait for next message 
  634. YYYY  mal_setflags     replace mailbox control flags 
  635. YYYY  mal_setpriset    priority level of mailbox in task's objectq 
  636. YYYYY mal_sizeof       get # messages pending 
  637. YYYYY mal_status       get status of last message received 
  638. YYYY  mal_subfrom      send msg by reference w given status 
  639. YYYYY mal_unlock       unlock access to a resource 
  640. YYYYY mal_write        send a message by value with status zero
  641.       
  642.       
  643.       Objectq Management Functions
  644. CPBRD
  645. -----
  646. YYYYY obq_close        close the task's objectq 
  647. YYYYY obq_erase        erase contents of the task's objectq 
  648. YYYYY obq_open         open the task's objectq 
  649. YYYYY obq_read         wait for any object to have input 
  650. YYYYY obq_sizeof       get # of objectq entries pending 
  651. YYYYY obq_status       determine if the task's objectq is open 
  652. YYYYY obq_subfrom      remove copies of object handle from task's
  653.                        objectq
  654. YYYYY obq_write        add an object handle to task's objectq
  655.       
  656.       
  657.       Panel Management Functions 
  658. CPBRD
  659. -----
  660. YYYYY pan_apply        display a named panel & prepare for input 
  661. YYYYY pan_close        close a panel file 
  662. YYYY  pan_dir          get list of panels in the panel file 
  663. YYYYY pan_free         free a panel object 
  664. YYYYY pan_new          create a panel object 
  665. YYYYY pan_open         open a panel file 
  666. YYYY  pan_owner        get owner of a given panel 
  667. YYYY  pan_sizeof       get # panels in the panel file 
  668. YYYYY pan_status       get status of last pan_open or pan_apply
  669.       
  670.       
  671.       Pointer Management Functions
  672. CPBRD
  673. -----
  674. YYYYY ptr_addto        set pointer control flags 
  675. YYYYY ptr_close        close a pointer object 
  676. YYYYY ptr_erase        erase pending pointer messages 
  677. YYYYY ptr_free         free a pointer object 
  678. YYYYY ptr_getflags     get pointer control flags 
  679. YYYYY ptr_getpri       get priority level of pointer in objectq 
  680. YYYYY ptr_getscale     get current scaling factors 
  681. YYYYY ptr_new          create a new pointer object 
  682. YYYYY ptr_open         open pointer and assign to a window 
  683. YYYY  ptr_owner        get owner of a given pointer 
  684. YYYYY ptr_read         wait for next pointer message 
  685. YYYYY ptr_setflags     replace pointer control flags 
  686. YYYYY ptr_setpri       set priority level of ptr in task's objectq 
  687. YYYYY ptr_setscale     set current scaling factors 
  688. YYYYY ptr_sizeof       get # messages pending 
  689. YYYYY ptr_status       get button status from last message received
  690. YYYYY ptr_subfrom      clear pointer control flags 
  691. YYYYY ptr_write        move the pointer to a given position
  692.       
  693.       
  694.       Query Functions
  695. CPBRD
  696. -----
  697. YYYYY qry_atread       TRUE if win_read and win_readn will read
  698.                        attributes
  699. YYYYY qry_attrget      current output attribute 
  700. YY Y  qry_col          get current cursor column position 
  701. YYYYY qry_color        get physical attribute for given logical
  702.                        attribute
  703. YYYYY qry_ctrl         TRUE if processing control codes 
  704. YYYYY qry_cursor       get current cursor position 
  705. YYYY  qry_dosuser      get handle of task currently using DOS 
  706. YYYYY qry_entry        get field table entry 
  707. YYYYY qry_field        get contents of a field 
  708. YYYY  qry_flength      get length of a field 
  709. YYYYY qry_frame        TRUE if the window has a frame 
  710. YYYYY qry_frattr       get current frame attribute 
  711.    Y  qry_ftable       get field table window stream 
  712. YYYYY qry_header       get field table header 
  713. YYYYY qry_hidden       TRUE if the window is hidden 
  714. YYYYY qry_kmouse       TRUE if using a keyboard mouse 
  715. YYYYY qry_leave        TRUE if leaving attributes untouched when
  716.                        writing to window
  717. YYYYY qry_logattr      TRUE if using logical attributes 
  718. YYYYY qry_lsize        get size of logical window buffer 
  719. YYYYY qry_origin       get origin of physical relative to logical
  720.                        window
  721. YYYYY qry_position     get position of physical window 
  722. YY Y  qry_row          get current cursor row position 
  723. YYYY  qry_scrninfo     get current size & video mode of screen 
  724. YYYYY qry_size         get size of physical window 
  725. YYYYY qry_title        get window's title 
  726. YYYYY qry_type         get type of field
  727.       
  728.       
  729.       Text File Device Driver Functions
  730. CPBRD
  731. -----
  732.  Y    tfd_attach       attach a given window to TFDD 
  733.  Y    tfd_close        close TFDD 
  734.  Y    tfd_lock         lock access to TFDD 
  735.  Y    tfd_open         open TFDD and attach given window 
  736.  Y    tfd_unlock       unlock access to TFDD
  737.       
  738.       
  739.       Timer Management Functions
  740. CPBRD
  741. -----
  742. YYYYY tim_addto        start a timer for a given interval 
  743. YYYYY tim_close        close a timer object 
  744. YYYYY tim_erase        stop a running timer 
  745. YYYYY tim_freefree     a timer object 
  746. YYYYY tim_getpriget    priority level of timer in objectq 
  747. YYYYY tim_len          get time remaining until timer expires 
  748. YYYYY tim_newcreate    a new timer object 
  749. YYYYY tim_openopen     a timer object 
  750. YYYY  tim_owner        get owner of a given timer 
  751. YYYYY tim_read         wait for timer to expire 
  752. YYYYY tim_setpri       set priority level of timer in task's
  753.                        objectq
  754. YYYYY tim_sizeofget    time since a timer started running 
  755. YYYYY tim_status       determine if a timer is running 
  756. YYYYY tim_write        start a timer for a given time of day
  757.       
  758.       
  759.       Task Management Functions
  760. CPBRD
  761. -----
  762. YY Y  tsk_dispatchint  software interrupt another task at a "safer"
  763.                        time
  764. YYYYY tsk_free         free a task and its window 
  765. YYYYY tsk_geterrorget  error handling level of current task 
  766. YYYY  tsk_me           get handle of current task 
  767. YY Y  tsk_new          create a new task 
  768. YY Y  tsk_pgmint       software interrupt another task 
  769. YYYY  tsk_owner        get owner of a given task 
  770. YYYYY tsk_post         restart a task waiting on its objectq 
  771. YYYYY tsk_seterror     set error handling level of current task 
  772. YYYYY tsk_start        restart a stopped task 
  773. YYYYY tsk_stop         temporarily stop a task
  774.       
  775.       
  776.       Window Management Functions 
  777. CPBRD
  778. -----
  779.    Y  win_achoice      execute a pop-up menu in a window 
  780. YYYYY win_addto        write characters & attributes to a window 
  781. YYYYY win_adopt        adopt a window 
  782. YYYYY win_allow        specify which DV commands are allowed 
  783. YY Y  win_async        define asynchronous notify function 
  784.    Y  win_atbox        draw a box in a window 
  785.    Y  win_atclear      clear rectangular region of window 
  786.    Y  win_atget        input data at specified window position 
  787.    Y  win_atprompt     paint menu prompts & define messages of
  788.                        window
  789. YYYYY win_atread       set read mode to read either character or
  790.                        attribute
  791.    Y  win_atsay        display data at specified window position 
  792. YYYY  win_attach       attach/detach window to parent task window 
  793.    Y  win_atto         draw single or double line box in window 
  794. YYYYY win_attr         set current output attribute 
  795. YYYYY win_blanks       write blanks to a window 
  796. YYYYY win_bottom       make window bottommost in its application
  797.    Y  win_browse       browse & edit records within a window 
  798. YYYY  win_buffer       get address of logical window buffer
  799. YYYYY win_cancel       cancel notification on a given event 
  800.    Y  win_clear        clear a window and home the cursor 
  801.    Y  win_clcolor      convert DESQview physical attribute to
  802.                        Clipper color code
  803.    Y  win_cleargets    release all of window's pending gets 
  804.    Y  win_clscroll     scroll window region up, down or blank out 
  805. YYYYY win_color        change logical attribute mapping 
  806. YYYY  win_connect      attach window to another window 
  807. YYYYY win_ctrl         enable/disable interpretation of control
  808.                        characters
  809. YYYYY win_cursor       move window's logical cursor 
  810.    Y  win_dbedit       browse records in a table layout 
  811. YYYYY win_dflt         change default notify window 
  812. YYYYY win_disallow     specify which DV commands are not allowed 
  813. YYYYY win_disperor     display an error message window 
  814.    Y  win_dvattr       convert Clipper color code to DESQview
  815.                        physical attribute
  816. YYYYY win_eof          TRUE if logical cursor is beyond end of
  817.                        window
  818. YYYYY win_erase        clear a window 
  819. YYYYY win_frame        enable/disable display of a window's frame 
  820. YYYYY win_frattr       define window frame attribute 
  821. YYYYY win_free         remove a window from screen and free its
  822.                        handle
  823. YYYYY win_hcur         display hardware cursor at logical cursor
  824.                        position
  825. YYYYY win_hide         mark a window as hidden 
  826. YYYYY win_leave        leave existing attribute when writing to
  827.                        window
  828. YYYYY win_len          return width of logical window 
  829. YYYYY win_locate       return which window is visible at given
  830.                        screen position
  831. YYYYY win_logattr      use logical/physical attributes 
  832. YYYYY win_lsize        set window's logical dimensions 
  833.    Y  win_mark1/2      display result of an expression in specified
  834.                        window
  835. YYYYY win_maxsize      set window's max physical dimensions 
  836. YYYYY win_me           get current task's window handle 
  837.    Y  win_menuto       execute light-bar menu for defined prompts
  838.                        in a window
  839. YYYYY win_minsize      set window's min physical dimensions 
  840. YYYYY win_move         move physical window 
  841. YYYYY win_new          create a new window 
  842. YYYYY win_notify       enable notification on a given event 
  843. YYYYY win_nread        read n characters from a window 
  844. YYYYY win_open         fill a window with a given character 
  845. YYYYY win_origin       define portion of logical window viewed in
  846.                        physical window
  847. YYYYY win_orphan       orphan a window 
  848. YYYY  win_owner        get owner of a given window 
  849. YYYYY win_paste        define window as current clipboard window 
  850. YYYYY win_point        jump mouse to logical cursor position 
  851. YYYYY win_poswin       position window relative to another window 
  852. YYYYY win_putc         write a character/attribute pair to a window
  853. YYYYY win_printf       write formatted data to a window 
  854. YYYYY win_read         read rest of current line from window 
  855.    Y  win_readexit     determine whether Up/Down keys exit 
  856.    Y  win_readgets     enter editing mode using pending gets in a
  857.                        window
  858. YYYYY win_redraw       redraw a window 
  859. YYYY  win_reorder      reorder an application's windows 
  860. YYYYY win_repattr      write an attribute to a window n times 
  861. YYYYY win_repchar      write a character to a window n times 
  862. YYYYY win_resize       set physical dimensions of a window 
  863.    Y  win_restore      display a saved window to a specified window
  864.                        area
  865.    Y  win_save         save window region to memory variable 
  866. YYYYY win_scroll       scroll all or part of a window 
  867.    Y  win_setbell      determine sounding of bell during
  868.                        win_readgets
  869.    Y  win_setcenter    determine centering of win_atprompt messages
  870.    Y  win_setcolor     determine color attributes of window 
  871.    Y  win_setconfirm   determine required win_atget termination
  872.                        with Enter key
  873.    Y  win_setescape    determine whether Esc key terminates
  874.                        win_readgets
  875.    Y  win_setintensity toggle display intensity of win_atget and
  876.                        win_atprompt
  877.    Y  win_setmessage   determine row and centering of win_atprompt
  878.                        messages
  879.    Y  win_setwrap      determine wrapping in win_menuto 
  880. YYYYY win_sizeof       get # character positions in the logical
  881.                        window
  882. YYYYY win_stream       write a stream to a window 
  883. YYYYY win_subfrom      write attributes to a window 
  884. YYYYY win_title        change a window's title 
  885. YYYYY win_top          make window topmost in its application 
  886. YYYYY win_topsys       make window topmost in the system 
  887. YYYYY win_unhide       mark a window as not hidden 
  888.    Y  win_updated      determine if pending gets changed during
  889.                        last win_readgets
  890. YYYYY win_write        write characters to a window
  891.       
  892.       
  893.  
  894.               YES! I'm Interested In System Development/Performance
  895. ┌───┬─────┬─────┬────────────────────────────────────────┬───────┬───────┐
  896. │QTY│5-1/4│3-1/2│ Product                                │ Price │ Total │
  897. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤
  898. │   │     │     │ DESQview                               │$129.95│$      │
  899. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤
  900. │   │     │     │ DESQview386 (DESQview & QEMM)          │$219.95│$      │
  901. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤
  902. │   │     │     │ Quarterdeck Manifest                   │$ 59.95│$      │
  903. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤
  904. │   │     │     │ QRAM                                   │$ 79.95│$      │
  905. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤
  906. │   │     │     │ QEMM 50/60                             │$ 99.95│$      │
  907. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤
  908. │   │     │     │ QEMM 386                               │$ 99.95│$      │
  909. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤
  910. │   │     │     │ DESQview API Debugger                  │$149.95│$      │
  911. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤
  912. │   │     │     │ DESQview API Panel Design Tool         │$149.95│$      │
  913. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤
  914. │   │     │     │ DESQview API Reference                 │$ 59.95│$      │
  915. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤
  916. │   │     │     │ DESQview API Libraries (C,Pascal,      │       │$      │
  917. │   │     │     │          Basic,Clipper and dBase)      │$199.95│       │
  918. │   │     │     │                                        │       │       │
  919. │   │     │     │ Check One:                             │       │       │
  920. │   │     │     │ C( )  Clipper( ) Pascal( ) dBase( )    │       │       │
  921. │   │     │     │ Basic( )                               │       │       │
  922. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤
  923. │   │     │     │ DESQview API Toolkit (API Reference,   │$500.00│$      │
  924. │   │     │     │            Library,Panel Design Tool,  │       │       │
  925. │   │     │     │            Debugger, DESQview)         │       │       │
  926. │   │     │     │                                        │       │       │
  927. │   │     │     │ Check One:                             │       │       │
  928. │   │     │     │ C( )  Clipper( ) Pascal( ) dBase( )    │       │       │
  929. │   │     │     │ Basic( )                               │       │       │
  930. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤
  931. │   │     │     │ DESQview by S.R. Davis (book)          │$ 29.95│$      │
  932. ├───┴─────┴─────┼────────────────────────────────────────┼───────┼───────┤
  933. │░░░░░░░░░░░░░░░│ Shipping & Handling                    │░░░░░░░│       │
  934. │░░░░░░░░░░░░░░░│ USA: $5                                │░░░░░░░│       │
  935. │░░░░░░░░░░░░░░░│ Outside USA: $10                       │░░░░░░░│$      │
  936. │░░░░░░░░░░░░░░░├────────────────────────────────────────┤░░░░░░░├───────┤
  937. │░░░░░░░░░░░░░░░│ Sales Tax (CA Only:%6.75)              │░░░░░░░│$      │
  938. │░░░░░░░░░░░░░░░├────────────────────────────────────────┼───────┴───────┤
  939. │░░░░░░░░░░░░░░░│ Amount                                 │$              │
  940. └───────────────┴────────────────────────────────────────┴───────────────┘
  941.                                                           
  942.                                                           
  943.  
  944.                                                           
  945.                                                           
  946. ┌────────────────────────────────────────────────────────────────────────┐
  947. │ Payment:  M/C VISA AMEX                                                │
  948. ├────────────────────────────────────────────────────────────────────────┤
  949. │ Expiration:                                                            │
  950. ├────────────────────────────────────────────────────────────────────────┤
  951. │ Card Number:                                                           │
  952. ├─────────────────────┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────────────────┤
  953. │ Name On Credit Card:│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │                  │
  954. ├─────────────────────┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴──────────────────┤
  955. │ Shipping Address:                                                      │
  956. │                                                                        │
  957. │                                                                        │
  958. ├────────────────────────────────────────────────────────────────────────┤
  959. │ Telephone:                                                             │
  960. ├────────────────────────────────────────────────────────────────────────┤
  961. │ Signature:                                                             │
  962. └────────────────────────────────────────────────────────────────────────┘
  963.                                                                   
  964.        
  965.  
  966.                             Quaterdeck Office Systems
  967.                      150 Pico Blvd., Santa Monica, CA 90405
  968.                                   (213)392-9851
  969.                                 Fax (213)399-3802
  970.  
  971.  
  972.            
  973.  
  974.                 Copyright (C) 1991 by Quarterdeck Office Systems
  975.                      * * *   E N D   O F   F I L E    * * *
  976.  
  977.